package com.cw.DesignModel23.Structural.CompositePattern.Composite2;

/**
 * 组织，如论是系、学院还是学校，都属于组织
 */
public abstract class OrganizationComponent {

    /**
     * 名字
     */
    private String name;
    /**
     * 说明
     */
    private String des;

    /**
     * 为什么需要默认实现，而不是写成抽象方法呢？
     * 因为叶子节点不需要实现add方法，如果是抽象方法的话，就要实现了，有点多余
     * @param organizationComponent
     */
    protected void add(OrganizationComponent organizationComponent) {
        //默认实现，抛出不支持操作异常
        throw new UnsupportedOperationException();
    }

    protected void remove(OrganizationComponent organizationComponent) {
        //默认实现
        throw new UnsupportedOperationException();
    }

    /**
     * 构造器
     * @param name
     * @param des
     */
    public OrganizationComponent(String name, String des) {
        super();
        this.name = name;
        this.des = des;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDes() {
        return des;
    }

    public void setDes(String des) {
        this.des = des;
    }

    /**
     * 打印方法, 做成抽象的, 子类都需要实现
     */
    protected abstract void print();

}

